// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from 'vue'
import App from './App'
import 'styles/reset.css'
import Element from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
import 'font-awesome/css/font-awesome.css'
import 'styles/common.less'
import 'styles/alterElUIStyle.less'
import 'styles/lm-icon.less'
import router from './router/index'
// 引入vuex
import store from './store'

// 时间
import moment from 'moment'
// 格式转换
// import '@/static/js/converter.js'
// 特殊表单验证
// import '@/static/js/validator.js'
// 分页共有部分
// import '@/static/js/pagination.js'
// 公用的funtion
// import '@/static/js/publicFun.js'
// 公用的图标转换器
// import '@/static/js/icon.js'
// 调用链公用Js
// import '@/static/apm/apmPublicCfg'
// 对Browser进行APM监控
// import ClientMonitor from 'apm-browser-js'
// 自监控公用Js
// import '@/static/smc/smcPublicCfg.js'

// 启用对Browser进行APM监控需要进行的设置
// ClientMonitor参数设置
//   注意修改当前service的名称
// 路由变化监听
// index.js里关于APM数据上报数据转发
//   /browser/
//   /v3/

// 把vuex定义成全局组件
Vue.prototype.$store = store

// 产品属性中的title放到全局变量中
Vue.prototype.PROJECT_TITlE = process.env.PROJECT_TITlE
Vue.prototype.PROJECT_LOGO = process.env.PROJECT_LOGO
Vue.prototype.APM_BROWSER_ENABLED = process.env.APM_BROWSER_ENABLED
Vue.prototype.APM_SERVICE_VERSION = process.env.APM_SERVICE_VERSION
Vue.prototype.APM_TIMECONTROL_DATELIMIT = process.env.APM_TIMECONTROL_DATELIMIT
Vue.prototype.CONSOLE_INFO_ENABLED = process.env.CONSOLE_INFO_ENABLED
Vue.prototype.AGGR_REMAIN_SERVICE_GROUP = process.env.AGGR_REMAIN_SERVICE_GROUP

if (process.env.NODE_ENV === 'production') {
  if (window.prod_env_config.PROJECT_TITlE) {
    Vue.prototype.PROJECT_TITlE = window.prod_env_config.PROJECT_TITlE
    document.title = Vue.prototype.PROJECT_TITlE
  }
  if (window.prod_env_config.PROJECT_LOGO) {
    Vue.prototype.PROJECT_LOGO = window.prod_env_config.PROJECT_LOGO
  }
  if (window.prod_env_config.APM_BROWSER_ENABLED) {
    Vue.prototype.APM_BROWSER_ENABLED = window.prod_env_config.APM_BROWSER_ENABLED
  }
  if (window.prod_env_config.APM_SERVICE_VERSION) {
    Vue.prototype.APM_SERVICE_VERSION = window.prod_env_config.APM_SERVICE_VERSION
  }
  if (window.prod_env_config.APM_TIMECONTROL_DATELIMIT) {
    Vue.prototype.APM_TIMECONTROL_DATELIMIT = window.prod_env_config.APM_TIMECONTROL_DATELIMIT
  }
  if (window.prod_env_config.CONSOLE_INFO_ENABLED) {
    Vue.prototype.CONSOLE_INFO_ENABLED = window.prod_env_config.CONSOLE_INFO_ENABLED
  }
}
// 元数据-业务详情-业务画像-对应业务下需要保留的业务生产环境与开发环境都需要配置
if (window.prod_env_config.AGGR_REMAIN_SERVICE_GROUP) {
  Vue.prototype.AGGR_REMAIN_SERVICE_GROUP = window.prod_env_config.AGGR_REMAIN_SERVICE_GROUP
}

// 设置语言 或 moment.lang('zh-cn')
moment.locale('zh-cn')
// 赋值使用
Vue.prototype.$moment = moment

// 阻止启动生产消息
Vue.config.productionTip = false

// 应用elementUI
Vue.use(Element, { size: 'small', zIndex: 3000 })

// Vue启动参数
const VueConfig = {
  el: '#app',
  router,
  store,
  components: { App },
  template: '<App/>'
}

// 启用对Browser进行APM监控
// ClientMonitor.customOptions.enableSPA = true
// ClientMonitor.customOptions.vue = Vue
// ClientMonitor.customOptions.service = 'domp-ui'
// ClientMonitor.customOptions.serviceVersion = 'v1.0.0'

// let apmBrowserEnabled = process.env.APM_BROWSER_ENABLED
// if (process.env.NODE_ENV === 'production' && typeof window.prod_env_config.APM_BROWSER_ENABLED === 'string') {
//   apmBrowserEnabled = window.prod_env_config.APM_BROWSER_ENABLED
// }

// let apmService = process.env.APM_SERVICE
// if (process.env.NODE_ENV === 'production' && typeof window.prod_env_config.APM_SERVICE === 'string') {
//   apmService = window.prod_env_config.APM_SERVICE
// }
// if (typeof apmService === 'string') {
//   ClientMonitor.customOptions.service = apmService
// }

// let apmServiceVersion = process.env.APM_SERVICE_VERSION
// if (process.env.NODE_ENV === 'production' && typeof window.prod_env_config.APM_SERVICE_VERSION === 'string') {
//   apmServiceVersion = window.prod_env_config.APM_SERVICE_VERSION
// }
// if (typeof apmServiceVersion === 'string') {
//   ClientMonitor.customOptions.serviceVersion = apmServiceVersion
// }

// if (apmBrowserEnabled !== 'false') {
//   ClientMonitor.register({
//     pagePath: location.pathname,
//     pageUrl: location.pathname,
//     useFmp: true
//   })
//   VueConfig['watch'] = {
//     // 遍历所有的路径增加APM监控接口
//     $route (to, from) {
//       // console.log('to', to, 'from', from)
//       const page = ClientMonitor.vueRoutePage(to)
//       ClientMonitor.setPerformance(page)
//       // 在TraceSegment构造的地方pagePath不能取到更新的值,EndPoint一直是相同的值
//       // 此处也需要斟酌是否需要这样这样来做
//       ClientMonitor.setPage(page.pagePath, page.pageUrl)
//     }
//   }
// }

/* eslint-disable no-new */
new Vue(VueConfig)
